<template>
  <div class="image-upload-box">
    <!-- 绑定 file-lis属性，用于数据回显
            limit:限制图片上传的个数 -->
    <!-- img-upload：动态类名，控制上传图片的显示隐藏 -->
    <el-upload
      :class="{'img-upload':fileList.length > 0}"
      action="#"
      list-type="picture-card"
      :http-request="upLode"
      :file-list="fileList"
      :limit="1"
      :on-remove="removeFn"
    >
      <i class="el-icon-plus" />
    </el-upload>
    <!-- 进度条 -->
    <el-progress v-if="percent > 0 && percent < 100" type="circle" :width="100" :percentage="percent" />
  </div>
</template>

<script>
import COS from 'cos-js-sdk-v5'
// SECRETID 和 SECRETKEY请登录 https://console.cloud.tencent.com/cam/capi 进行查看和管理
var cos = new COS({
  SecretId: 'AKIDjIchX7SXO0NUMzMTMZYJp67tRknb9RWM',
  SecretKey: 'e7MN9fy2qPjnbAVbS3QZVBbmhNnxsYy8'
})
export default {
  data() {
    return {
      fileList: [],
      percent: 0 // 当前上传的进度
    }
  },

  methods: {
    // 移除图片
    removeFn() {
      this.fileList = []
    },
    // 上传
    upLode(data) {
      // 上传图片时立刻天机空对象,然后上传完成后再向数组添加数据
      this.fileList.push({
        url: ''
      })
      // data里面的data才是真正的上传给后端的图片对象
      console.log(data)
      cos.putObject({
        Bucket: 'hr-project-1313158006', /* 必须 ---存储桶名字*/
        Region: 'ap-guangzhou', /* 存储桶所在地域，必须字段 */
        Key: (Date.now()).toString(), /* 必须 ----上传到腾讯云后台的文件名字*/
        StorageClass: 'STANDARD',
        Body: data.file, // 上传文件对象
        onProgress: (progressData) => {
        //   console.log(JSON.stringify(progressData))
        // 动态当前进度值 设置进度条
        // 保留两位小数
        //   this.percent = (progressData.percent * 100).toFixed(2)
        // 进度条组件必需为数字类型，添加+ 将数据转化为数字类型
          this.percent = +(progressData.percent * 100).toFixed(2)
        }
      }, (err, data) => {
        console.log(err || data)
        if (!err) {
          // 如果成功，保存图片路径 -----注意：这里this有作用域，将函数改为箭头函数（没有this）
        //   吧图片上传的路径保存起来
        //   this.fileList.push({
        //     url: 'https://' + data.Location
        //   })
          this.fileList[0].url = 'https://' + data.Location
        }
      })
    }
  }
}
</script>

<style lang="scss" >
.image-upload-box{
    position: relative;
    display: inline-block;
    .el-progress{
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%,-55%);
    }
}
// >>>是scss的样式穿透语法
// >>>.el-upload--picture-card
.img-upload{
.el-upload--picture-card{
display: none;
}
}

</style>
